# Carregando bibliotecas necess�rias
library(dplyr)
library(lmtest)
library(sandwich)
library(readxl)


# Definindo o diret�rio de trabalho e importando os dados

MCMV_voto_dados <- readxl::read_excel("MCMV_voto_dados.xlsx", sheet = "Sheet1")

# Definindo os r�tulos para a vari�vel Regiao_num
Regiao_labels <- c("Sudeste", "Sul", "Centro-Oeste", "Norte", "Nordeste")
MCMV_voto_dados$Regiao_num <- factor(MCMV_voto_dados$Regiao_num, levels = 1:5, labels = Regiao_labels)

summary(MCMV_voto_dados)


# Fun��o para realizar regress�es com clustering
clustered_lm <- function(formula, data, cluster) {
  model <- lm(formula, data = data)
  coeftest(model, vcov = vcovHC(model, type = "HC1", cluster = data[[cluster]]))
}

# Tabela 1
# (1) Unidades contratadas
MCMV_voto_dados <- MCMV_voto_dados %>% 
  mutate(MCMV_contratada_2012 = ((contratada2009 + contratada2010 + contratada2011 + contratada2012) / Domicilios_total) * 100)

MCMV_contratada_2012_model <- clustered_lm(MCMV_contratada_2012 ~ Base + DficitHabitacionalTotalRelat + pequeno2010 + RM_2010 + idh_2010 + Regiao_num + ln_pib_percapita_2010 + urbanizacao_2010, data = MCMV_voto_dados, cluster = "UF")

# (2) Unidades conclu�das
MCMV_voto_dados <- MCMV_voto_dados %>% 
  mutate(MCMV_concluida_2012 = ((concluida2009 + concluida2010 + concluida2011 + concluida2012) / Domicilios_total) * 100)

MCMV_concluida_2012_model <- clustered_lm(MCMV_concluida_2012 ~ Base + DficitHabitacionalTotalRelat + pequeno2010 + RM_2010 + idh_2010 + Regiao_num + ln_pib_percapita_2010 + urbanizacao_2010, data = MCMV_voto_dados, cluster = "UF")

# (3) Unidades entregues
MCMV_voto_dados <- MCMV_voto_dados %>% 
  mutate(MCMV_entregue_2012 = ((entregue2009 + entregue2010 + entregue2011 + entregue2012) / Domicilios_total) * 100)

MCMV_entregue_2012_model <- clustered_lm(MCMV_entregue_2012 ~ Base + DficitHabitacionalTotalRelat + pequeno2010 + RM_2010 + idh_2010 + Regiao_num + ln_pib_percapita_2010 + urbanizacao_2010, data = MCMV_voto_dados, cluster = "UF")

# (4) Faixa 1
MCMV_voto_dados <- MCMV_voto_dados %>% 
  mutate(MCMV_contratada_faixa1_2012 = ((contratada2009_faixa1 + contratada2010_faixa1 + contratada2011_faixa1 + contratada2012_faixa1) / Domicilios_faixa1) * 100)

MCMV_contratada_faixa1_2012_model <- clustered_lm(MCMV_contratada_faixa1_2012 ~ Base + DficitHabitacional03Rendime + pequeno2010 + RM_2010 + idh_2010 + Regiao_num + ln_pib_percapita_2010 + urbanizacao_2010, data = MCMV_voto_dados, cluster = "UF")

###

library(texreg)

screenreg(list(MCMV_contratada_2012_model, MCMV_concluida_2012_model, 
               MCMV_entregue_2012_model, MCMV_contratada_faixa1_2012_model))


# Comparando coeficientes de prefeitos da base dos diferentes modelos
# Para comparar os coeficientes, voc� precisar� extrair manualmente os coeficientes dos modelos e comparar
# Por exemplo:
coef(MCMV_contratada_faixa1_2012_model)["Base"] - coef(MCMV_contratada_2012_model)["Base"]
coef(MCMV_contratada_faixa1_2012_model)["Base"] - coef(MCMV_concluida_2012_model)["Base"]


### Tabela 2

# (1) Unidades contratadas
MCMV_voto_dados <- MCMV_voto_dados %>% 
  mutate(MCMV_contratada_2010 = ((contratada2009 + contratada2010) / Domicilios_total) * 100)

MCMV_contratada_2010_model <- clustered_lm(MCMV_contratada_2010 ~ corePT2006 + swingPT2006 + 
                                             DficitHabitacionalTotalRelat + pequeno2010 + RM_2010 + idh_2010 + Regiao_num + ln_pib_percapita_2010 + urbanizacao_2010, data = MCMV_voto_dados, cluster = "UF")

# (2) Unidades conclu�das
MCMV_voto_dados <- MCMV_voto_dados %>% 
  mutate(MCMV_concluida_2010 = ((concluida2009 + concluida2010) / Domicilios_total) * 100)

MCMV_concluida_2010_model <- clustered_lm(MCMV_concluida_2010 ~ corePT2006 + swingPT2006 + DficitHabitacionalTotalRelat + pequeno2010 + RM_2010 + idh_2010 + Regiao_num + ln_pib_percapita_2010 + urbanizacao_2010, data = MCMV_voto_dados, cluster = "UF")

# (3) Unidades entregues
MCMV_voto_dados <- MCMV_voto_dados %>% 
  mutate(MCMV_entregue_2010 = ((entregue2009 + entregue2010) / Domicilios_total) * 100)

MCMV_entregue_2010_model <- clustered_lm(MCMV_entregue_2010 ~ corePT2006 + swingPT2006 + DficitHabitacionalTotalRelat + pequeno2010 + RM_2010 + idh_2010 + Regiao_num + ln_pib_percapita_2010 + urbanizacao_2010, data = MCMV_voto_dados, cluster = "UF")

# (4) Faixa 1
MCMV_voto_dados <- MCMV_voto_dados %>% 
  mutate(MCMV_contratada_faixa1_2010 = ((contratada2009_faixa1 + contratada2010_faixa1) / Domicilios_faixa1) * 100)

MCMV_contratada_faixa1_2010_model <- clustered_lm(MCMV_contratada_faixa1_2010 ~ corePT2006 + swingPT2006 + DficitHabitacional03Rendime + pequeno2010 + RM_2010 + idh_2010 + Regiao_num + ln_pib_percapita_2010 + urbanizacao_2010, data = MCMV_voto_dados, cluster = "UF")



screenreg(list(MCMV_contratada_2010_model, MCMV_concluida_2010_model,
               MCMV_entregue_2010_model, MCMV_contratada_faixa1_2010_model))


### Tabela 3

MCMV_voto_dados$RM <- MCMV_voto_dados$RM_2010

# (1) Unidades contratadas
MCMV_voto_dados <- MCMV_voto_dados %>% 
  mutate(MCMV_contratada_2014 = ((contratada2011 + contratada2012 + contratada2013 + contratada2014) / Domicilios_total) * 100)

MCMV_contratada_2014_model <- clustered_lm(MCMV_contratada_2014 ~ corePT2010 + swingPT2010 + DficitHabitacionalTotalRelat + pequeno2014 + RM + idh_2010 + Regiao_num + ln_pib_percapita_2014 + urbanizacao_2010, data = MCMV_voto_dados, cluster = "UF")

# (2) Unidades conclu�das
MCMV_voto_dados <- MCMV_voto_dados %>% 
  mutate(MCMV_concluida_2014 = ((concluida2011 + concluida2012 + concluida2013 + concluida2014) / Domicilios_total) * 100)

MCMV_concluida_2014_model <- clustered_lm(MCMV_concluida_2014 ~ corePT2010 + swingPT2010 + DficitHabitacionalTotalRelat + pequeno2014 + RM + idh_2010 + Regiao_num + ln_pib_percapita_2014 + urbanizacao_2010, data = MCMV_voto_dados, cluster = "UF")

# (3) Unidades entregues
MCMV_voto_dados <- MCMV_voto_dados %>% 
  mutate(MCMV_entregue_2014 = ((entregue2011 + entregue2012 + entregue2013 + entregue2014) / Domicilios_total) * 100)

MCMV_entregue_2014_model <- clustered_lm(MCMV_entregue_2014 ~ corePT2010 + swingPT2010 + DficitHabitacionalTotalRelat + pequeno2014 + RM + idh_2010 + Regiao_num + ln_pib_percapita_2014 + urbanizacao_2010, data = MCMV_voto_dados, cluster = "UF")

# (4) Faixa 1
MCMV_voto_dados <- MCMV_voto_dados %>% 
  mutate(MCMV_contratada_faixa1_2014 = ((contratada2011_faixa1 + contratada2012_faixa1 + contratada2013_faixa1 + contratada2014_faixa1) / Domicilios_faixa1) * 100)

MCMV_contratada_faixa1_2014_model <- clustered_lm(MCMV_contratada_faixa1_2014 ~ corePT2010 + swingPT2010 + DficitHabitacional03Rendime + pequeno2014 + RM + idh_2010 + Regiao_num + ln_pib_percapita_2014 + urbanizacao_2010, data = MCMV_voto_dados, cluster = "UF")

# Comparando coeficientes de corePT dos diferentes modelos
coef_faixa1_corePT2014 <- coef(MCMV_contratada_faixa1_2014_model)["corePT2010"]
coef_contratada_corePT2014 <- coef(MCMV_contratada_2014_model)["corePT2010"]
coef_concluida_corePT2014 <- coef(MCMV_concluida_2014_model)["corePT2010"]
coef_entregue_corePT2014 <- coef(MCMV_entregue_2014_model)["corePT2010"]

# Realizando as compara��es
comparacao1_2014 <- coef_faixa1_corePT2014 - coef_contratada_corePT2014
comparacao2_2014 <- coef_faixa1_corePT2014 - coef_concluida_corePT2014
comparacao3_2014 <- coef_faixa1_corePT2014 - coef_entregue_corePT2014

# Imprimindo os resultados
print(comparacao1_2014)
print(comparacao2_2014)
print(comparacao3_2014)

screenreg(list(MCMV_contratada_2014_model, MCMV_concluida_2014_model,
               MCMV_entregue_2014_model, MCMV_contratada_faixa1_2014_model))


### Tabela 4

# (1) Unidades contratadas / TotalHab
PT_2010_model1 <- clustered_lm(PT_2010 ~ corePT2006 + swingPT2006 + MCMV_contratada_2010 + alcance_PBF_2010 + Base + GOV_PT_2006 + Regiao_num + RM + cres_pib_percapita_2010_2009 + urbanizacao_2010 + idh_2010 + pequeno2010 + nonwhite_2010 + pent_2010 + APU_PIB_2010, data = MCMV_voto_dados, cluster = "UF")

# (2) Unidades contratadas / D�ficitHab
MCMV_voto_dados <- MCMV_voto_dados %>% 
  mutate(MCMV_contratada_2010_deficit = ((contratada2009 + contratada2010) / Deficit_total) * 100)

PT_2010_model2 <- clustered_lm(PT_2010 ~ corePT2006 + swingPT2006 + MCMV_contratada_2010_deficit + alcance_PBF_2010 + Base + GOV_PT_2006 + Regiao_num + RM + cres_pib_percapita_2010_2009 + urbanizacao_2010 + idh_2010 + pequeno2010 + nonwhite_2010 + pent_2010 + APU_PIB_2010, data = MCMV_voto_dados, cluster = "UF")

# (3) Unidades conclu�das / TotalHab
PT_2010_model3 <- clustered_lm(PT_2010 ~ corePT2006 + swingPT2006 + MCMV_concluida_2010 + alcance_PBF_2010 + Base + GOV_PT_2006 + Regiao_num + RM + cres_pib_percapita_2010_2009 + urbanizacao_2010 + idh_2010 + pequeno2010 + nonwhite_2010 + pent_2010 + APU_PIB_2010, data = MCMV_voto_dados, cluster = "UF")

# (4) Unidades conclu�das / D�ficitHab
MCMV_voto_dados <- MCMV_voto_dados %>% 
  mutate(MCMV_concluida_2010_deficit = ((concluida2009 + concluida2010) / Deficit_total) * 100)

PT_2010_model4 <- clustered_lm(PT_2010 ~ corePT2006 + swingPT2006 + MCMV_concluida_2010_deficit + alcance_PBF_2010 + Base + GOV_PT_2006 + Regiao_num + RM + cres_pib_percapita_2010_2009 + urbanizacao_2010 + idh_2010 + pequeno2010 + nonwhite_2010 + pent_2010 + APU_PIB_2010, data = MCMV_voto_dados, cluster = "UF")

# (5) Unidades entregues / TotalHab
PT_2010_model5 <- clustered_lm(PT_2010 ~ corePT2006 + swingPT2006 + MCMV_entregue_2010 + alcance_PBF_2010 + Base + GOV_PT_2006 + Regiao_num + RM + cres_pib_percapita_2010_2009 + urbanizacao_2010 + idh_2010 + pequeno2010 + nonwhite_2010 + pent_2010 + APU_PIB_2010, data = MCMV_voto_dados, cluster = "UF")

# (6) Unidades entregues / D�ficitHab
MCMV_voto_dados <- MCMV_voto_dados %>% 
  mutate(MCMV_entregue_2010_deficit = ((entregue2009 + entregue2010) / Deficit_total) * 100)

PT_2010_model6 <- clustered_lm(PT_2010 ~ corePT2006 + swingPT2006 + MCMV_entregue_2010_deficit + alcance_PBF_2010 + Base + GOV_PT_2006 + Regiao_num + RM + cres_pib_percapita_2010_2009 + urbanizacao_2010 + idh_2010 + pequeno2010 + nonwhite_2010 + pent_2010 + APU_PIB_2010, data = MCMV_voto_dados, cluster = "UF")

summary(PT_2010_model6)

# (7) Faixa 1 / TotalHab
PT_2010_model7 <- clustered_lm(PT_2010 ~ corePT2006 + swingPT2006 + MCMV_contratada_faixa1_2010 + alcance_PBF_2010 + Base + GOV_PT_2006 + Regiao_num + RM + cres_pib_percapita_2010_2009 + urbanizacao_2010 + idh_2010 + pequeno2010 + nonwhite_2010 + pent_2010 + APU_PIB_2010, data = MCMV_voto_dados, cluster = "UF")

# (8) Faixa 1 / D�ficitHab
MCMV_voto_dados <- MCMV_voto_dados %>% 
  mutate(MCMV_contratada_faixa1_2010_def = ((contratada2009_faixa1 + contratada2010_faixa1) / Deficit_faixa1) * 100)

PT_2010_model8 <- clustered_lm(PT_2010 ~ corePT2006 + swingPT2006 + MCMV_contratada_faixa1_2010_def + alcance_PBF_2010 + Base + GOV_PT_2006 + Regiao_num + RM + cres_pib_percapita_2010_2009 + urbanizacao_2010 + idh_2010 + pequeno2010 + nonwhite_2010 + pent_2010 + APU_PIB_2010, data = MCMV_voto_dados, cluster = "UF")

# Calculando efeitos preditos

# Comparando coeficientes de MCMV dos diferentes modelos
coef_contratada <- coef(PT_2010_model1)["MCMV_contratada_2010"]
coef_contratada_deficit <- coef(PT_2010_model2)["MCMV_contratada_2010_deficit"]
coef_concluida <- coef(PT_2010_model3)["MCMV_concluida_2010"]
coef_concluida_deficit <- coef(PT_2010_model4)["MCMV_concluida_2010_deficit"]
coef_entregue <- coef(PT_2010_model5)["MCMV_entregue_2010"]
coef_entregue_deficit <- coef(PT_2010_model6)["MCMV_entregue_2010_deficit"]
coef_faixa1 <- coef(PT_2010_model7)["MCMV_contratada_faixa1_2010"]
coef_faixa1_deficit <- coef(PT_2010_model8)["MCMV_contratada_faixa1_2010_def"]

# Realizando compara��es lineares
comparacao_contratada <- coef_contratada_deficit - coef_contratada
comparacao_concluida <- coef_concluida_deficit - coef_concluida
comparacao_entregue <- coef_entregue_deficit - coef_entregue
comparacao_faixa1 <- coef_faixa1_deficit - coef_faixa1

# Imprimindo os resultados
print(comparacao_contratada)
print(comparacao_concluida)
print(comparacao_entregue)
print(comparacao_faixa1)

### Tabela 5

# (1) Unidades contratadas / TotalHab
PT_2014_model1 <- clustered_lm(PT_2014 ~ corePT2010 + swingPT2010 + MCMV_contratada_2014 + alcance_PBF_2014 + Base2013 + GOV_PT_2010 + Regiao_num + RM + cres_pib_percapita_2014_2013 + urbanizacao_2010 + idh_2010 + pequeno2014 + nonwhite_2010 + pent_2010 + APU_PIB_2014, data = MCMV_voto_dados, cluster = "UF")

# (2) Unidades contratadas / D�ficitHab
MCMV_voto_dados <- MCMV_voto_dados %>% 
  mutate(MCMV_contratada_2014_deficit = ((contratada2011 + contratada2012 + contratada2013 + contratada2014) / Deficit_total) * 100)

PT_2014_model2 <- clustered_lm(PT_2014 ~ corePT2010 + swingPT2010 + MCMV_contratada_2014_deficit + alcance_PBF_2014 + Base2013 + GOV_PT_2010 + Regiao_num + RM + cres_pib_percapita_2014_2013 + urbanizacao_2010 + idh_2010 + pequeno2014 + nonwhite_2010 + pent_2010 + APU_PIB_2014, data = MCMV_voto_dados, cluster = "UF")

# (3) Unidades conclu�das / TotalHab
PT_2014_model3 <- clustered_lm(PT_2014 ~ corePT2010 + swingPT2010 + MCMV_concluida_2014 + alcance_PBF_2014 + Base2013 + GOV_PT_2010 + Regiao_num + RM + cres_pib_percapita_2014_2013 + urbanizacao_2010 + idh_2010 + pequeno2014 + nonwhite_2010 + pent_2010 + APU_PIB_2014, data = MCMV_voto_dados, cluster = "UF")

# (4) Unidades conclu�das / D�ficitHab
MCMV_voto_dados <- MCMV_voto_dados %>% 
  mutate(MCMV_concluida_2014_deficit = ((concluida2011 + concluida2012 + concluida2013 + concluida2014) / Deficit_total) * 100)

PT_2014_model4 <- clustered_lm(PT_2014 ~ corePT2010 + swingPT2010 + MCMV_concluida_2014_deficit + alcance_PBF_2014 + Base2013 + GOV_PT_2010 + Regiao_num + RM + cres_pib_percapita_2014_2013 + urbanizacao_2010 + idh_2010 + pequeno2014 + nonwhite_2010 + pent_2010 + APU_PIB_2014, data = MCMV_voto_dados, cluster = "UF")

# (5) Unidades entregues / TotalHab
PT_2014_model5 <- clustered_lm(PT_2014 ~ corePT2010 + swingPT2010 + MCMV_entregue_2014 + alcance_PBF_2014 + Base2013 + GOV_PT_2010 + Regiao_num + RM + cres_pib_percapita_2014_2013 + urbanizacao_2010 + idh_2010 + pequeno2014 + nonwhite_2010 + pent_2010 + APU_PIB_2014, data = MCMV_voto_dados, cluster = "UF")

# (6) Unidades entregues / D�ficitHab
MCMV_voto_dados <- MCMV_voto_dados %>% 
  mutate(MCMV_entregue_2014_deficit = ((entregue2011 + entregue2012 + entregue2013 + entregue2014) / Deficit_total) * 100)

PT_2014_model6 <- clustered_lm(PT_2014 ~ corePT2010 + swingPT2010 + MCMV_entregue_2014_deficit + alcance_PBF_2014 + Base2013 + GOV_PT_2010 + Regiao_num + RM + cres_pib_percapita_2014_2013 + urbanizacao_2010 + idh_2010 + pequeno2014 + nonwhite_2010 + pent_2010 + APU_PIB_2014, data = MCMV_voto_dados, cluster = "UF")

# (7) Faixa 1 / TotalHab
PT_2014_model7 <- clustered_lm(PT_2014 ~ corePT2010 + swingPT2010 + MCMV_contratada_faixa1_2014 + alcance_PBF_2014 + Base2013 + GOV_PT_2010 + Regiao_num + RM + cres_pib_percapita_2014_2013 + urbanizacao_2010 + idh_2010 + pequeno2014 + nonwhite_2010 + pent_2010 + APU_PIB_2014, data = MCMV_voto_dados, cluster = "UF")

# (8) Faixa 1 / D�ficitHab
MCMV_voto_dados <- MCMV_voto_dados %>% 
  mutate(MCMV_contratada_faixa1_2014_def = ((contratada2011_faixa1 + contratada2012_faixa1 + contratada2013_faixa1 + contratada2014_faixa1) / Deficit_faixa1) * 100)

summary(MCMV_voto_dados$MCMV_contratada_faixa1_2010_def)

summary(MCMV_voto_dados)

MCMV_voto_dados$MCMV_contratada_faixa1_2014_def <- as.numeric(MCMV_voto_dados$MCMV_contratada_faixa1_2014_def)

# Identificar onde est�o os valores infinitos
inf_indices <- which(is.infinite(MCMV_voto_dados$MCMV_contratada_faixa1_2014_def))

# Op��o 1: Substituir valores infinitos por NA (ou outro valor)
MCMV_voto_dados$MCMV_contratada_faixa1_2014_def[inf_indices] <- NA

PT_2014_model8 <- clustered_lm(PT_2014 ~ corePT2010 + swingPT2010 + MCMV_contratada_faixa1_2014_def + alcance_PBF_2014 + Base2013 + GOV_PT_2010 + Regiao_num + RM + cres_pib_percapita_2014_2013 + urbanizacao_2010 + idh_2010 + pequeno2014 + nonwhite_2010 + pent_2010 + APU_PIB_2014, data = MCMV_voto_dados, cluster = "UF")

## Ver modelos

screenreg(list(PT_2010_model1, PT_2010_model2, PT_2010_model3, PT_2010_model4,
               PT_2010_model5, PT_2010_model6, PT_2010_model7, PT_2010_model8))


screenreg(list(PT_2014_model1, PT_2014_model2, PT_2014_model3, PT_2014_model4,
               PT_2014_model5, PT_2014_model6, PT_2014_model7, PT_2014_model8))



